volatility介绍-内存取证*

ZJ Lv100

[volatility介绍]内存取证*

前言

出自BUUCTF 练习场,也有相关的配套课本(我看的是《CTF实战 从入门到提升》,感觉还行,但有不少细节感觉还是得查资料才能懂)

题目

打开靶场会给一个压缩包,下载下来解压后会有发现其大小很大,基本就是内存取证了,因为给的是一整个镜像文件

image-20240926134910714

这里用kali来进行演示

volatility 工具进行取证

取证分析参考文档
1
2
vol.py -f Keyboard.raw imageinfo
#查看/识别镜像信息

image-20240926013207143

发现是Win7SP1x64系统

1
2
vol.py -f Keyboard.raw --profile=Win7SP1x64 filescan | grep "keyboard"	
#指定镜像版本并filescan扫描文件再过滤输出

image-20240926013752848

1
2
vol.py -f Keyboard.raw --profile=Win7SP1x64 dumpfiles -Q 0x000000003d700880 -D ./test
#指定镜像版本并dumpfiles指定文件,指定内存中的偏移量并导出到当前文件夹下面的test目录

image-20240926014722168

image-20240926014933567

这时候内存取证就做完了,拿到一串加密字符串

CTKQEKNHZHQLLVGKROLATNWGQKRRKQGWNTA

ctfwikiCRYPTO可知在ctfwiki里去查找,解密方式为键盘QWE密码

在这里插入图片描述

这里提供一个解密脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#qwe密码解密,输入字符串,返回解密的明文
def encrypt_qwe(s):
DIC_QWE = "qwertyuiopasdfghjklzxcvbnm"
DIC_ABC = "abcdefghijklmnopqrstuvwxyz"
result=""
for i in s:
for j in range(len(DIC_ABC)):
if i==DIC_QWE[j]:
result=result+DIC_ABC[j]
return result

s="CTKQEKNHZHQLLVGKROLATNWGQKRRKQGWNTA" #------------这里为需要解密的密码--------------
s=s.lower()#统一转化为小写
s=s.strip().replace(" ","")#去掉空格

print(encrypt_qwe(s))

解密得出veracrypt password is keyboarddraobyek

得到了一个密码keyboarddraobyek

这时候需要用到最开始给的文件secret来使用这个密码了

使用VeraCrypt 打开Secret

image-20240926203556035

点击Mount挂载,输入刚才得到的密码KEYBOARDDRAOBYEK

image-20240926203642722

而后本机就会多一个G盘,里面就有一个虚拟磁盘here.vhd

image-20240926203830424

打开计算机管理,在磁盘管理处右键附加VHD,就会再多一个盘符H

附加虚拟盘符

里面有个假的flag

在这里插入图片描述

然后用NTFS隐写工具NtfsStreamsEditor 2 打开,即可得到flag

在这里插入图片描述

flag为4a02f6dc603c377a234df479609d237c

总结

一道比较考验综合能力的题目,分割看挺简单,加在一起很难立刻联想到下一个,勤加练习吧=_=

题目在这里

  • Title: volatility介绍-内存取证*
  • Author: ZJ
  • Created at : 2024-09-26 00:00:00
  • Updated at : 2025-01-17 01:55:45
  • Link: https://blog.overlordzj.cn/2024/09/26/ctf/writeup/misc/buuctf/[volatility介绍]内存取证/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments
On this page
volatility介绍-内存取证*